Propriedades (properties) são atributos calculados em tempo de execução. As propriedades são criadas através da função / decorador property.
O uso de propriedades permite:
Exemplo de código sem propriedades:
In [3]:
# get_*, set_*...
class Projetil(object):
def __init__(self, alcance, tempo):
self.alcance = alcance
self.tempo = tempo
def get_velocidade(self):
return self.alcance / self.tempo
moab = Projetil(alcance=10000, tempo=60)
print moab.get_velocidade()
Exemplo de propriedade através de decorador:
In [4]:
# Exemplo de property de leitura
class Projetil(object):
def __init__(self, alcance, tempo):
self.alcance = alcance
self.tempo = tempo
@property
def velocidade(self):
return self.alcance / self.tempo
moab = Projetil(alcance=10000, tempo=60)
# A velocidade é calculada
print moab.velocidade
Exemplo de propriedade através de chamada de função:
In [5]:
# Property de leitura e escrita
class Projetil(object):
def __init__(self, alcance, tempo):
self.alcance = alcance
self.tempo = tempo
# Calcula a velocidade
def getv(self):
return self.alcance / self.tempo
# Calcula o tempo
def setv(self, v):
self.tempo = self.alcance / v
# Define a propriedade
velocidade = property(getv, setv)
moab = Projetil(alcance=10000, tempo=60)
print moab.velocidade
# Muda a velocidade
moab.velocidade = 350
print moab.tempo
Propriedades são particularmente interessantes para quem desenvolve bibliotecas para serem usadas por outras pessoas.
In [1]:
Out[1]: